python 闭包

闭包的比较好的解释是:把函数及其环境包装起来

def foo(x):
    def acc(y) :
        return x+y
    return acc

a = foo(3)
print a(4)
print foo(3)(4)
>> 7
>> 7

函数可以嵌套,python 确实是一门非常好玩的语言。

def a(x):
    def b(y):
        def c(z):
            return x+y+z
        return c
    return b

print a(1)(2)(3)
>> 6

多参数传递

def defun(func):
    def wrapper(*args,**kw):
        print func.__name__ , 'in'
        result = func(*args,**kw)
        print func.__name__ , 'out'
        return result
    return wrapper

@defun
def ff(n,m):
    print n+m

ff(3,4)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ff in
7
ff out